Problem 1

f <- function(x)(2.9*sqrt(x) - x**2)

#a. To at least 3 post-decimal digits of accuracy,
#what is the true integral value when a = 0, b1? a = 0, b= 2? (5 Pts)
a <- 0
b1 <- 1
b2 <- 2
integrate(f, a, b1) # interval a to b1
## 1.6 with absolute error < 1.8e-15
integrate(f, a, b2) # interval a to b2
## 2.801626 with absolute error < 0.00023
#b. Using n = 100, 1000, and 10,000, estimate (via MC) the integral for the 
#two combinations of a and b in part (a). Please keep in mind that the area of the plot is different than 1. (10 Pts)
n1 <- 100
n2 <- 1000
n3 <- 10000

#1) b = 1 
set.seed(1) #set the random seed in order to get the same result each time
# n = 100
x <- runif(n1, min = a, max = b1) #generate 100 random values from a to b1 from uniform distribution
I = sum(f(x)) / n1 * (b1 - a) #monte carlo integration
I
## [1] 1.656398
# n = 1000
x <- runif(n2, min = a, max = b1)
I = sum(f(x)) / n2 * (b1 - a)
I
## [1] 1.596041
# n = 1000
x <- runif(n3, min = a, max = b1)
I = sum(f(x)) / n3 * (b1 - a)
I
## [1] 1.596852
#2) b = 2
#n = 100
x <- runif(n1, min = a, max = b2)
I = sum(f(x)) / n1 * (b2 - a)
I
## [1] 2.735921
#n = 1000
x <- runif(n2, min = a, max = b2)
I = sum(f(x)) / n2 * (b2 - a)
I
## [1] 2.799014
#n = 10000
x <- runif(n3, min = a, max = b2)
I = sum(f(x)) / n3 * (b2 - a)
I
## [1] 2.80315

Problem 2

setwd("/Users/yixuantang/Desktop/18Spring/Mobility/hw4")
library(ggplot2)
library(reshape2)
# Reference letters
ref = readLines('47429-0.txt') # my book: Windfalls by A. G. Gardiner
ref = toupper(ref)

# Create a transition Matrix
transitionMatrix=matrix(0,27,27)
rownames(transitionMatrix)=colnames(transitionMatrix)=c(toupper(letters),"")
lastletter=""

# Check if this can print the lines
for (ln in 1:3) {
  print(ref[ln])
}
## [1] "THE PROJECT GUTENBERG EBOOK OF WINDFALLS, BY"
## [1] "(AKA ALPHA OF THE PLOUGH) ALFRED GEORGE GARDINER"
## [1] ""
# The check is successful, now move on to reading lines
# Loop through each line, within each line loop through each character
for (ln in 1:length(ref)) {
  # Print line number every 1k
  if (ln %% 1000 ==0) {cat("Line",ln,"\n")}
  for (pos in 1:nchar(ref[ln])) { #nchar: count the number of characters 
    curletter=substring(ref[ln],pos,pos)
    if (curletter %in% toupper(letters)) {
      transitionMatrix[rownames(transitionMatrix)==lastletter,
                       colnames(transitionMatrix)==curletter]=
        transitionMatrix[rownames(transitionMatrix)==lastletter,
                         colnames(transitionMatrix)==curletter]+1
      lastletter=curletter
    } else {
      if (lastletter!="") {
        transitionMatrix[rownames(transitionMatrix)==lastletter,27]=
          transitionMatrix[rownames(transitionMatrix)==lastletter,27]+1
        lastletter=""
      }
    }
  }
  curletter=""
  if (lastletter!="") {
    transitionMatrix[rownames(transitionMatrix)==lastletter,27]=
      transitionMatrix[rownames(transitionMatrix)==lastletter,27]+1
  }
  lastletter=""
}
## Line 1000 
## Line 2000 
## Line 3000 
## Line 4000 
## Line 5000 
## Line 6000
transitionProb=sweep(transitionMatrix+1,1,rowSums(transitionMatrix+1),FUN="/")

# Let's plot this transition probability matrix 
ggplot(melt(transitionProb),aes(Var2,Var1))+geom_tile(aes(fill=value))+
  scale_fill_gradient(low="white",high="black",limits=c(0,1))+
  labs(x="Probability of Second Letter",y="Conditioning on First Letter",fill="Prob")+
  scale_y_discrete(limits = rev(levels(melt(transitionProb)$Var1)))+
  coord_equal()

Fig1. transition matrix plot

# b.decode 
# Decoding function
decode <- function(mapping,coded) {
  coded=toupper(coded)
  decoded=coded
  for (i in 1:nchar(coded)) {
    if (substring(coded,i,i) %in% toupper(letters)) {
      substring(decoded,i,i)=toupper(letters[mapping==substring(coded,i,i)])
    }
  }
  decoded
}

# Log probability function
log.prob <- function(mapping,decoded) {
  logprob=0
  
  lastletter=""
  for (i in 1:nchar(decoded)) {
    curletter=substring(decoded,i,i)
    if (curletter %in% toupper(letters)) {
      logprob=logprob+log(transitionProb[rownames(transitionMatrix)==lastletter,
                                         colnames(transitionMatrix)==curletter])
      lastletter=curletter
    } else {
      if (lastletter!="") {
        logprob=logprob+log(transitionProb[rownames(transitionMatrix)==lastletter,27])
        lastletter=""
      }
    }
  }
  
  if (lastletter!="") {
    logprob=logprob+log(transitionProb[rownames(transitionMatrix)==lastletter,27])
    lastletter=""
  }
  logprob
}

codedQuote="RQG LWY C AGG CR CF YOP WXG BOCJB RO EPCDM W RCVG VWNQCJG CJRO W NWX
LQY JOR MO CR LCRQ AOVG ARYDG"

#set.seed(313435) #origin
set.seed(313230) #reset seed

# MCM procedure with 2000 iterations
mapping=sample(toupper(letters)) # initialize a random mapping
i=1
iters=2000
cur.decode=decode(mapping,codedQuote)
cur.loglike=log.prob(mapping,cur.decode)
max.loglike=cur.loglike
max.decode=cur.decode
while (i<=iters) {
  proposal=sample(1:26,2) # select 2 letters to switch
  prop.mapping=mapping
  prop.mapping[proposal[1]]=mapping[proposal[2]]
  prop.mapping[proposal[2]]=mapping[proposal[1]]
  
  prop.decode=decode(prop.mapping,codedQuote)
  prop.loglike=log.prob(prop.mapping,prop.decode)
  
  if (runif(1)<exp(prop.loglike-cur.loglike)) {
    mapping=prop.mapping
    cur.decode=prop.decode
    cur.loglike=prop.loglike
    
    if (cur.loglike>max.loglike) {
      max.loglike=cur.loglike
      max.decode=cur.decode
    }
    
    if (i %% 100 ==0) {cat(i,cur.decode,"\n")}
    i=i+1
  }
}
## 100 TRE WAL I HEE IT IG LOF ABE DOIND TO JFISP A TIME MACRINE INTO A CAB
## WRL NOT PO IT WITR HOME HTLSE 
## 200 THE WIR A PEE AT AF ROU ISE DOAND TO BUALY I TAME MICHANE ANTO I CIS
## WHR NOT YO AT WATH POME PTRLE 
## 300 THE WAR I BEE IT IS ROU AYE GOING TO QUILD A TIME MACHINE INTO A CAY
## WHR NOT DO IT WITH BOME BTRLE 
## 400 THE PAY I FEE IT IG YOU ASE ROINR TO BUILD A TIME MAWHINE INTO A WAS
## PHY NOT DO IT PITH FOME FTYLE 
## 500 THE WAR I BEE IT IS ROK AME DOIND TO CKILY A TIFE FAPHINE INTO A PAM
## WHR NOT YO IT WITH BOFE BTRLE 
## 600 THE WAR I SEE IT IF ROK ALE DOIND TO CKIMY A TIVE VAPHINE INTO A PAL
## WHR NOT YO IT WITH SOVE STRME 
## 700 THE WAR I PEE IT IS ROF ALE DOIND TO UFIGY A TIME MACHINE INTO A CAL
## WHR NOT YO IT WITH POME PTRGE 
## 800 THE WAS I BEE IT IG SOM ARE DOIND TO UMILY A TIFE FACHINE INTO A CAR
## WHS NOT YO IT WITH BOFE BTSLE 
## 900 THE WAY I CEE IT IK YOR AGE FOINF TO BRIMP A TILE LASHINE INTO A SAG
## WHY NOT PO IT WITH COLE CTYME 
## 1000 THE WAR I BEE IT ID ROF ANE LOISL TO UFIMY A TIVE VACHISE ISTO A CAN
## WHR SOT YO IT WITH BOVE BTRME 
## 1100 THE WAR I BEE IT IF ROD AGE POISP TO UDIKN A TIVE VACHISE ISTO A CAG
## WHR SOT NO IT WITH BOVE BTRKE 
## 1200 THE WAR I FEE IT IG ROL AKE DOIND TO BLISY A TIME MACHINE INTO A CAK
## WHR NOT YO IT WITH FOME FTRSE 
## 1300 THE WAY I BEE IT IK YOR ADE GOING TO URISL A TIME MACHINE INTO A CAD
## WHY NOT LO IT WITH BOME BTYSE 
## 1400 THE WAY I CEE IT IK YOR ASE FOINF TO PRILD A TIME MAGHINE INTO A GAS
## WHY NOT DO IT WITH COME CTYLE 
## 1500 THE WAY I REE IT IG YOU AKE DOIND TO BUISP A TIME MACHINE INTO A CAK
## WHY NOT PO IT WITH ROME RTYSE 
## 1600 THE WAY I PEE IT IK YOR ADE GOING TO BRIMF A TISE SACHINE INTO A CAD
## WHY NOT FO IT WITH POSE PTYME 
## 1700 THE WAY I BEE IT IK YOR ALE FOINF TO URIMS A TIPE PACHINE INTO A CAL
## WHY NOT SO IT WITH BOPE BTYME 
## 1800 THE WAS I BEE IT ID SOR ALE GOING TO URIVY A TIME MACHINE INTO A CAL
## WHS NOT YO IT WITH BOME BTSVE 
## 1900 THE WAR I BEE IT IG ROU ALE DOIND TO PUISM A TIVE VACHINE INTO A CAL
## WHR NOT MO IT WITH BOVE BTRSE 
## 2000 THE WAY I SEE IT IF YOU ARE GOING TO BUILD A TIME MACHINE INTO A CAR
## WHY NOT DO IT WITH SOME STYLE

After 2000 iterations(random seed 313230), I got the decoded quote: THE WAY I SEE IT IF YOU ARE GOING TO BUILD A TIME MACHINE INTO A CAR WHY NOT DO IT WITH SOME STYLE. This a Dialogue from the movie Back to The Future!

double the jump probability and re-run the MCMC process.

set.seed(313230) #reset seed
# MCM procedure with 2000 iterations
mapping=sample(toupper(letters)) # initialize a random mapping
i=1
iters=10000
cur.decode=decode(mapping,codedQuote)
cur.loglike=log.prob(mapping,cur.decode)
max.loglike=cur.loglike
max.decode=cur.decode
while (i<=iters) {
  proposal=sample(1:26,2) # select 2 letters to switch
  prop.mapping=mapping
  prop.mapping[proposal[1]]=mapping[proposal[2]]
  prop.mapping[proposal[2]]=mapping[proposal[1]]
  
  prop.decode=decode(prop.mapping,codedQuote)
  prop.loglike=log.prob(prop.mapping,prop.decode)
  
  if (runif(1)<exp(prop.loglike-cur.loglike)*2) {
    mapping=prop.mapping
    cur.decode=prop.decode
    cur.loglike=prop.loglike
    
    if (cur.loglike>max.loglike) {
      max.loglike=cur.loglike
      max.decode=cur.decode
    }
    
    if (i %% 100 ==0) {cat(i,cur.decode,"\n")}
    i=i+1
  }
}
## 100 SUE HAT I WEE IS ID TOL AKE POIMP SO CLINY A SIFE FARUIME IMSO A RAK
## HUT MOS YO IS HISU WOFE WSTNE 
## 200 SHE WAT I MEE IS IN TOL AGE BOIRB SO ULICY A SIVE VAPHIRE IRSO A PAG
## WHT ROS YO IS WISH MOVE MSTCE 
## 300 TRE POM A HEE AT AC MIS OWE DIAND TI KSABL O TAVE VOFRANE ANTI O FOW
## PRM NIT LI AT PATR HIVE HTMBE 
## 400 THE WOU A IEE AT AK USP OFE YSANY TS MPALD O TACE COGHANE ANTS O GOF
## WHU NST DS AT WATH ISCE ITULE 
## 500 THE WOU A IEE AT AL USP OFE YSARY TS MPAND O TABE BOCHARE ARTS O COF
## WHU RST DS AT WATH ISBE ITUNE 
## 600 THE WOU A IEE AT AG USP OFE DSARD TS MPALK O TABE BOCHARE ARTS O COF
## WHU RST KS AT WATH ISBE ITULE 
## 700 THE COU A IEE AT AK USP OFE DSARD TS MPANG O TALE LOWHARE ARTS O WOF
## CHU RST GS AT CATH ISLE ITUNE 
## 800 THE WOY A IEE AT AK YSL OFE DSAND TS PLARU O TAME MOCHANE ANTS O COF
## WHY NST US AT WATH ISME ITYRE 
## 900 THE WOU A IEE AT AD USP OFE LSANL TS QPARK O TAME MOCHANE ANTS O COF
## WHU NST KS AT WATH ISME ITURE 
## 1000 THE COU A IEE AT AY USP OFE GSANG TS MPALK O TABE BOWHANE ANTS O WOF
## CHU NST KS AT CATH ISBE ITULE 
## 1100 THE POU A IEE AT AX USL OFE DSAND TS BLARM O TACE COWHANE ANTS O WOF
## PHU NST MS AT PATH ISCE ITURE 
## 1200 THE COY A IEE AT AM YSU OFE DSAND TS BUALK O TAPE POGHANE ANTS O GOF
## CHY NST KS AT CATH ISPE ITYLE 
## 1300 THE WOU A SEE AT AY UID OFE GIANG TI RDAPL O TABE BOCHANE ANTI O COF
## WHU NIT LI AT WATH SIBE STUPE 
## 1400 THE SOI A PEE AT AD IRY OFE GRANG TR MYABU O TALE LOWHANE ANTR O WOF
## SHI NRT UR AT SATH PRLE PTIBE 
## 1500 THE WOR I FEE IT IL RAY OKE DAIND TA PYISM O TIVE VOCHINE INTA O COK
## WHR NAT MA IT WITH FAVE FTRSE 
## 1600 THE WOU I PEE IT IM URD OFE GRING TR XDILA O TISE SOCHINE INTR O COF
## WHU NRT AR IT WITH PRSE PTULE 
## 1700 THE WOI A MEE AT AK ISY OFE DSAND TS BYARG O TALE LOCHANE ANTS O COF
## WHI NST GS AT WATH MSLE MTIRE 
## 1800 THE WOR A IEE AT AY RSU OKE DSALD TS FUANG O TAME MOCHALE ALTS O COK
## WHR LST GS AT WATH ISME ITRNE 
## 1900 THE COR A IEE AT AY RSP OFE GSANG TS ZPALM O TABE BOWHANE ANTS O WOF
## CHR NST MS AT CATH ISBE ITRLE 
## 2000 THE GAR I CEE IT IK ROM ALE DOIND TO UMISP A TIVE VAWHINE INTO A WAL
## GHR NOT PO IT GITH COVE CTRSE 
## 2100 THE WAR I BEE IT IV ROD ASE GOING TO UDIFY A TIME MACHINE INTO A CAS
## WHR NOT YO IT WITH BOME BTRFE 
## 2200 THE WAR I SEE IT ID ROU AKE GOING TO BUIFL A TIVE VACHINE INTO A CAK
## WHR NOT LO IT WITH SOVE STRFE 
## 2300 THE WAY I BEE IT IR YOU AKE DOIND TO PUIMF A TISE SACHINE INTO A CAK
## WHY NOT FO IT WITH BOSE BTYME 
## 2400 THE WAY I CEE IT ID YOU ABE SOINS TO JUIPR A TIME MAGHINE INTO A GAB
## WHY NOT RO IT WITH COME CTYPE 
## 2500 THE WAY I LEE IT IG YOU ARE MOISM TO BUIND A TICE CAPHISE ISTO A PAR
## WHY SOT DO IT WITH LOCE LTYNE 
## 2600 THE WAR I FEE IT ID ROU AKE BOINB TO PUIMS A TIVE VACHINE INTO A CAK
## WHR NOT SO IT WITH FOVE FTRME 
## 2700 THE WAR I BEE IT IS ROP AGE DOIND TO MPIKF A TIVE VACHINE INTO A CAG
## WHR NOT FO IT WITH BOVE BTRKE 
## 2800 THE WAY I BEE IT IF YOK ARE DOIND TO CKIMS A TIVE VAGHINE INTO A GAR
## WHY NOT SO IT WITH BOVE BTYME 
## 2900 THE WAY I SEE IT IF YOG ARE DOIND TO UGIMP A TIVE VACHINE INTO A CAR
## WHY NOT PO IT WITH SOVE STYME 
## 3000 THE WAY I SEE IT IF YOU ADE GOING TO JUIMP A TIVE VACHINE INTO A CAD
## WHY NOT PO IT WITH SOVE STYME 
## 3100 THE WAR I PEE IT IS ROF AKE GOING TO QFIMY A TIVE VACHINE INTO A CAK
## WHR NOT YO IT WITH POVE PTRME 
## 3200 THE WAS I FEE IT IK SOU AME DOIND TO GUILY A TIRE RACHINE INTO A CAM
## WHS NOT YO IT WITH FORE FTSLE 
## 3300 THE WAY I CEE IT IR YOU AME DOIND TO BUISF A TIPE PAGHINE INTO A GAM
## WHY NOT FO IT WITH COPE CTYSE 
## 3400 THE WAY I FEE IT IK YOU ALE DOIND TO BUIRS A TICE CAPHINE INTO A PAL
## WHY NOT SO IT WITH FOCE FTYRE 
## 3500 THE WAY I CEE IT IS YOR ALE DOIND TO PRIMB A TIVE VAGHINE INTO A GAL
## WHY NOT BO IT WITH COVE CTYME 
## 3600 THE GAS I BEE IT IZ SOK ARE FOINF TO CKIMY A TIVE VAWHINE INTO A WAR
## GHS NOT YO IT GITH BOVE BTSME 
## 3700 THE WAY I CEE IT IR YOL AKE DOIND TO PLIBU A TIME MASHINE INTO A SAK
## WHY NOT UO IT WITH COME CTYBE 
## 3800 THE WAY I BEE IT IG YOU ARE DOIND TO SUIMP A TILE LACHINE INTO A CAR
## WHY NOT PO IT WITH BOLE BTYME 
## 3900 THE WAY I CEE IT IB YOR AUE DOIND TO PRILS A TIME MAGHINE INTO A GAU
## WHY NOT SO IT WITH COME CTYLE 
## 4000 THE WAY I BEE IT IG YOR ALE DOIND TO URISM A TICE CAPHINE INTO A PAL
## WHY NOT MO IT WITH BOCE BTYSE 
## 4100 THE WAL I CEE IT IF LOU AKE SOINS TO PUIDY A TIME MAGHINE INTO A GAK
## WHL NOT YO IT WITH COME CTLDE 
## 4200 THE WAS I CEE IT IG SOU ARE DOIND TO QUIVY A TIFE FAPHINE INTO A PAR
## WHS NOT YO IT WITH COFE CTSVE 
## 4300 THE WAY I CEE IT ID YOR ALE FOINF TO URIGS A TIME MAPHINE INTO A PAL
## WHY NOT SO IT WITH COME CTYGE 
## 4400 THE WAY I SEE IT IL YOR AGE DOIND TO FRIMP A TIVE VACHINE INTO A CAG
## WHY NOT PO IT WITH SOVE STYME 
## 4500 THE WAM I SEE IT IX MOR ADE GOING TO URIBY A TILE LACHINE INTO A CAD
## WHM NOT YO IT WITH SOLE STMBE 
## 4600 THE WIR A FEE AT AS ROU IGE DOALD TO BUAKY I TANE NICHALE ALTO I CIG
## WHR LOT YO AT WATH FONE FTRKE 
## 4700 THE WIM A CEE AT AY MOU IKE GOANG TO BUARD I TALE LISHANE ANTO I SIK
## WHM NOT DO AT WATH COLE CTMRE 
## 4800 THE WIR A SEE AT AM ROU IPE COANC TO FUAYD I TALE LIGHANE ANTO I GIP
## WHR NOT DO AT WATH SOLE STRYE 
## 4900 SHE WIT A BEE AS AG TOU IKE FOARF SO JUALY I SAPE PICHARE ARSO I CIK
## WHT ROS YO AS WASH BOPE BSTLE 
## 5000 TRE WAL I SEE IT ID LOG ANE HOICH TO UGIKF A TIME MABRICE ICTO A BAN
## WRL COT FO IT WITR SOME STLKE 
## 5100 THE WAY I REE IT IF YOU AKE POISP TO BUINL A TIVE VACHISE ISTO A CAK
## WHY SOT LO IT WITH ROVE RTYNE 
## 5200 THE WAR I FEE IT IS ROU APE YOINY TO BUILD A TIVE VACHINE INTO A CAP
## WHR NOT DO IT WITH FOVE FTRLE 
## 5300 THE WAR I BEE IT IF ROD ANE LOISL TO PDIMY A TIVE VACHISE ISTO A CAN
## WHR SOT YO IT WITH BOVE BTRME 
## 5400 THE WIR A CEE AT AS ROU IKE FOANF TO PUAVY I TALE LIGHANE ANTO I GIK
## WHR NOT YO AT WATH COLE CTRVE 
## 5500 THE WAR I PEE IT ID ROU ANE LOIFL TO BUISY A TIME MACHIFE IFTO A CAN
## WHR FOT YO IT WITH POME PTRSE 
## 5600 THE WAY I CEE IT IS YOU ARE GOING TO LUIMB A TIFE FAPHINE INTO A PAR
## WHY NOT BO IT WITH COFE CTYME 
## 5700 THE WAY I CEE IT IF YOU ARE DOIND TO QUILS A TIVE VAPHINE INTO A PAR
## WHY NOT SO IT WITH COVE CTYLE 
## 5800 THE WAR I CEE IT IL ROK ASE DOIND TO PKIVY A TIME MAGHINE INTO A GAS
## WHR NOT YO IT WITH COME CTRVE 
## 5900 THE WAR I CEE IT IS ROB AGE DOIND TO ZBILY A TIFE FAPHINE INTO A PAG
## WHR NOT YO IT WITH COFE CTRLE 
## 6000 THE WIO A BEE AT AM ORS IDE GRANG TR USALF I TAVE VICHANE ANTR I CID
## WHO NRT FR AT WATH BRVE BTOLE 
## 6100 THE WIM A CEE AT AK MOL ISE DOAND TO ULABY I TAFE FIGHANE ANTO I GIS
## WHM NOT YO AT WATH COFE CTMBE 
## 6200 THE WIS A NEE AT AM SOR IDE FOALF TO PRACY I TAVE VIGHALE ALTO I GID
## WHS LOT YO AT WATH NOVE NTSCE 
## 6300 THE WAY I BEE IT IF YOR AGE DOIND TO URILS A TIME MACHINE INTO A CAG
## WHY NOT SO IT WITH BOME BTYLE 
## 6400 THE WAS I BEE IT IG SOR AYE DOIND TO FRILP A TIME MACHINE INTO A CAY
## WHS NOT PO IT WITH BOME BTSLE 
## 6500 THE WAS I CEE IT IG SOR AYE DOIND TO BRILF A TIME MAPHINE INTO A PAY
## WHS NOT FO IT WITH COME CTSLE 
## 6600 THE WAY I CEE IT IF YOU AKE GOING TO JUIRP A TIVE VASHINE INTO A SAK
## WHY NOT PO IT WITH COVE CTYRE 
## 6700 THE WAY I SEE IT IK YOU AME DOIND TO PUIRG A TIBE BACHINE INTO A CAM
## WHY NOT GO IT WITH SOBE STYRE 
## 6800 THE WAR I FEE IT IL ROU ABE DOIND TO GUISY A TIME MACHINE INTO A CAB
## WHR NOT YO IT WITH FOME FTRSE 
## 6900 THE WAR I SEE IT IG ROL AKE DOIND TO BLIMP A TIVE VACHINE INTO A CAK
## WHR NOT PO IT WITH SOVE STRME 
## 7000 THE WAR I FEE IT IK ROL ASE DOIND TO ULIVY A TIME MACHINE INTO A CAS
## WHR NOT YO IT WITH FOME FTRVE 
## 7100 THE WIS A FEE AT AD SOL IME YOARY TO PLANG I TAKE KICHARE ARTO I CIM
## WHS ROT GO AT WATH FOKE FTSNE 
## 7200 THE WAY I REE IT IM YOU AKE DOIND TO FUISL A TICE CAPHINE INTO A PAK
## WHY NOT LO IT WITH ROCE RTYSE 
## 7300 THE WAY I CEE IT IM YOR ALE DOIND TO FRISP A TIVE VAGHINE INTO A GAL
## WHY NOT PO IT WITH COVE CTYSE 
## 7400 THE WAS I CEE IT ID SOR ALE GOING TO FRIMY A TIVE VAPHINE INTO A PAL
## WHS NOT YO IT WITH COVE CTSME 
## 7500 THE WIS A CEE AT AK SOL IFE YOANY TO JLAUD I TAVE VIRHANE ANTO I RIF
## WHS NOT DO AT WATH COVE CTSUE 
## 7600 THE SOR A BEE AT AY RID OUE GIANG TI LDAMP O TACE COWHANE ANTI O WOU
## SHR NIT PI AT SATH BICE BTRME 
## 7700 THE WIR A CEE AT AB ROU ILE DOAND TO MUAKF I TAVE VIPHANE ANTO I PIL
## WHR NOT FO AT WATH COVE CTRKE 
## 7800 THE WIS A FEE AT AY SOU IKE DOAND TO PUACR I TALE LIGHANE ANTO I GIK
## WHS NOT RO AT WATH FOLE FTSCE 
## 7900 THE WAY I PEE IT IN YOD AKE MOISM TO UDILG A TIRE RACHISE ISTO A CAK
## WHY SOT GO IT WITH PORE PTYLE 
## 8000 THE WAY I CEE IT ID YOR ALE SOINS TO KRIMB A TIVE VAGHINE INTO A GAL
## WHY NOT BO IT WITH COVE CTYME 
## 8100 THE WAY I BEE IT IG YOU ARE DOIND TO CUILS A TIME MAPHINE INTO A PAR
## WHY NOT SO IT WITH BOME BTYLE 
## 8200 THE WAR I BEE IT ID ROU ASE FOINF TO GUICY A TIME MAPHINE INTO A PAS
## WHR NOT YO IT WITH BOME BTRCE 
## 8300 THE WAY I BEE IT IG YOR ANE MOISM TO FRILD A TIVE VACHISE ISTO A CAN
## WHY SOT DO IT WITH BOVE BTYLE 
## 8400 THE WAY I CEE IT IK YOR ASE DOIND TO PRILF A TIME MAGHINE INTO A GAS
## WHY NOT FO IT WITH COME CTYLE 
## 8500 THE WAY I GEE IT IK YOU ASE FOINF TO PUIRD A TIME MACHINE INTO A CAS
## WHY NOT DO IT WITH GOME GTYRE 
## 8600 THE WAY I SEE IT ID YOR AKE FOINF TO URILG A TIME MACHINE INTO A CAK
## WHY NOT GO IT WITH SOME STYLE 
## 8700 THE SAR I BEE IT IF ROU ALE DOIND TO QUIMP A TICE CAGHINE INTO A GAL
## SHR NOT PO IT SITH BOCE BTRME 
## 8800 THE WAY I PEE IT IG YOF ABE DOIND TO QFISL A TIVE VACHINE INTO A CAB
## WHY NOT LO IT WITH POVE PTYSE 
## 8900 THE WAY I CEE IT IS YOR AME DOIND TO BRIKL A TIFE FAPHINE INTO A PAM
## WHY NOT LO IT WITH COFE CTYKE 
## 9000 THE WAR I BEE IT ID ROF ALE YOISY TO KFING A TIME MACHISE ISTO A CAL
## WHR SOT GO IT WITH BOME BTRNE 
## 9100 THE WAR I CEE IT IK ROL APE DOIND TO BLIMY A TIVE VASHINE INTO A SAP
## WHR NOT YO IT WITH COVE CTRME 
## 9200 THE WAY I SEE IT IK YOU ALE GOING TO CUIBF A TIME MAPHINE INTO A PAL
## WHY NOT FO IT WITH SOME STYBE 
## 9300 THE WAS I FEE IT IG SOU ARE DOIND TO BUILY A TIME MACHINE INTO A CAR
## WHS NOT YO IT WITH FOME FTSLE 
## 9400 THE WAR I FEE IT IK ROU ALE GOING TO BUIDS A TICE CAPHINE INTO A PAL
## WHR NOT SO IT WITH FOCE FTRDE 
## 9500 THE WIR A FEE AT AK ROU IXE DOAND TO BUALS I TAME MICHANE ANTO I CIX
## WHR NOT SO AT WATH FOME FTRLE 
## 9600 THE WAY I BEE IT IF YOL AKE DOIND TO SLIGR A TIME MACHINE INTO A CAK
## WHY NOT RO IT WITH BOME BTYGE 
## 9700 THE WAR I FEE IT IS ROL ABE DOIND TO ULIKY A TIME MACHINE INTO A CAB
## WHR NOT YO IT WITH FOME FTRKE 
## 9800 THE WIS A CEE AT AZ SOM IKE DOAND TO UMALY I TAFE FIGHANE ANTO I GIK
## WHS NOT YO AT WATH COFE CTSLE 
## 9900 THE WAR I BEE IT ID ROK ALE YOINY TO CKIMP A TIFE FASHINE INTO A SAL
## WHR NOT PO IT WITH BOFE BTRME 
## 10000 THE WIR A PEE AT AF ROU ISE YOALY TO BUAND I TAVE VICHALE ALTO I CIS
## WHR LOT DO AT WATH POVE PTRNE

Up to 10,000 iterations, it still not generates the whole complete sentence.

Problem 3

# Q3
######################################
## Conservation Law(Actual Dataset) ##
######################################

Filename<-"d04_text_station_5min_2013_01_05.txt"
PeMS <- read.delim(gzfile(Filename), sep="," ,header=FALSE)
dim(PeMS)
## [1] 688608     52
PeMS[1,]
##                    V1     V2 V3  V4 V5 V6    V7 V8 V9 V10    V11  V12 V13
## 1 01/05/2013 00:00:00 400000  4 101  S ML 0.275 40  0  63 0.0125 67.9  10
##   V14    V15  V16 V17 V18 V19    V20  V21 V22 V23 V24    V25  V26 V27 V28
## 1  13 0.0089 73.6   0  10  19 0.0138 69.9   0  10  17 0.0143 66.3   0  10
##   V29   V30  V31 V32 V33 V34 V35 V36 V37 V38 V39 V40 V41 V42 V43 V44 V45
## 1  14 0.013 61.8   0  NA  NA  NA  NA   0  NA  NA  NA  NA   0  NA  NA  NA
##   V46 V47 V48 V49 V50 V51 V52
## 1  NA   0  NA  NA  NA  NA   0
TimeInterval<-5
LowTime<-0
UpTime<-length(Filename)*24*60/TimeInterval

#Selection a loop detector station with a given ID, for instance SelectedID=402278
#402828
TrafficCount<-function(upstreamSensorID, downsteramSensorID){
  SelectedID<-upstreamSensorID
  StationData<-subset(PeMS,PeMS[,2]==SelectedID)
  q<-StationData[,10]
  return (q)
}


sensor1 = TrafficCount(401529)  # Upstream Sensor
sensor2 = TrafficCount(401613)  # Downstream Sensor
sensor3 <- TrafficCount(401613)
sensor4 <- TrafficCount(400536)
# Simulated downstream departure flow
set.seed(10009)
SimulatedDeparture<-(sensor2+sample(1:as.integer(sd(sensor2)),288,replace=T)* sample(c(-1,1),288,replace=T))
SimulatedDeparture[which(SimulatedDeparture<0)]=0

N0=500
dT= 5 # minutes
dX= 1 # mile
k0=N0/dX
simulation<-function(inFlow, outFlow){
  for (i in 1:65){ #time step = 65
    plot(NA,NA,xlim=c(0,140),ylim=c(0,100),main="Verifying Conservation Law Using Sensor Data",xlab="Road Section (X)",ylab="",axes = FALSE,frame.plot = TRUE)
    q1=inFlow[i] # veh/minute
    q2=outFlow[i] # veh/minute
    ki = (N0+q1-q2)/dX
    N0=(N0+q1-q2)
    text(40, 90, paste("Time = ",i,sep=""), pos =4,col=2)
    text(40, 80, paste("N = ",N0,sep=""), pos =4,col=4)
    text(-3, 10, paste("q1 = ",q1,sep=""), pos =4,col=2)
    text(120, 10, paste("q2 = ",q2,sep=""), pos =4,col=2)
    text(80, 90, paste("Ki-1 = ",k0,sep=""), pos =4,col=4)
    text(80, 80, paste("Ki = ",ki,sep=""), pos =4,col=4)
    text(40,70,paste("Delta_q = ", q2-q1), pos =4,col=4)
    text(80,70,paste("Delta_k = ", ki-k0), pos =4,col=4)
    rect(xleft=20, ybottom=20, xright=120, ytop=60, density = NULL, angle = 45, col = "gray", border = 3,  lwd = 1)
    color ="yellow"
    if(120-ki/5000*120>120){
      color="red"
    }
    rect(xleft=120-ki/5000*120, ybottom=20, xright=120, ytop=60, density = NULL, angle = 45, col =color, border = 3,  lwd = 1)
    k0 = ki
    Sys.sleep(0.3)
  }  
}

a.Using sensor 401529 as the input sensor and sensor 401613 as output sensor

echo = FALSE
simulation(sensor1, sensor2)

In this situation, the conservation law holds. #### b.Using sensor 401613 as the input sensor and sensor 400536 as output sensor

echo = FALSE
simulation(sensor3, sensor4)

As we can refer from the chart above, the conservation law doesn’t holds.

For more detailed explanation and comments, please check the PDF, thanks!